1. Field of the Invention
The present invention generally relates to the field of wireless communication systems. More specifically, the invention relates to rate decision methods for code division multiple access protocols.
2. Related Art
In wireless communication systems several users share a common communication channel. To avoid conflicts arising from several users transmitting information over the communication channel at the same time, some regulation on allocating the available channel capacity to the users is required. Regulation of user access to the communication channel is achieved by various forms of multiple access protocols. One class of these protocols is the class of code division multiple access (CDMA) protocols. For example, variations of the CDMA protocols include direct sequence (DS-CDMA), time-hopped (TH-CDMA), frequency hopped (FH-CDMA), and hybrids of these. In addition to providing multiple access allocation to a channel of limited capacity, the protocol can serve other functions, for example, providing isolation of users from each other, i.e. limiting interference between users, and providing security by making interception and decoding difficult for a non-intended receiver, also referred to as low probability of intercept.
The multiple access function of CDMA protocols is primarily achieved by means of coding. Each user uniquely encodes its information signal into a transmission signal. The intended receiver, knowing the code sequences of the user, can decode the transmission signal to receive the information. The encoding of the information signal spreads its spectrum so that the bandwidth of the encoded transmission signal is much greater than the original bandwidth of the information signal. For this reason CDMA is also referred to as “spread spectrum” modulation or coding. The energy of each user's signal is spread across the channel bandwidth so that each user's signal appears as noise to the other users. So long as the decoding process can achieve an adequate signal to noise ratio, i.e. separation of the desired user's signal from the “noise” of the other users, the information in the signal can be recovered.
A number of methods have been implemented to provide effective coding and decoding of spread spectrum signals. The methods include error detection and correction codes, and convolutional codes. In wireless communications, especially in voice communications, it is desirable to provide communication between two users in both directions simultaneously, referred to as duplexing or full-duplexing. One method used to provide duplexing with CDMA is frequency division duplexing. In frequency division duplexing, one frequency band is used for communication from a base station to a mobile user, called the forward channel, and another frequency band is used for communication from the mobile user to the base station, called the reverse channel. Specific implementation of coding and modulation may differ between forward and reverse channels.
The user's information signal in the form of digital data is first coded to protect it from errors. The digital data, for example, may come from a voice encoder, which converts the sound of the user's voice into a sequence of binary digits or bits. The coding protects the digital data from errors by introducing redundancy into the information signal. Codes used to detect errors are called error detection codes, and codes which are capable of detecting and correcting errors are called error correction codes. Two basic types of error detection and correction codes are block codes and convolutional codes.
Block codes are forward error correction (FEC) codes that enable a certain amount of errors to be detected and corrected without retransmitting the user's information signal. In a block code the digital data from the user's information signal is coded into blocks of some length, say n bits. Of the n bits, k bits are encoded information and n−k bits are redundant bits used for error detection and correction when the blocks are decoded to retrieve the digital data of the user's information signal. The rate of the code is defined as R=k/n, and is equal to the input rate of user information being coded divided by the output rate of coded information being transmitted. There are many examples of block codes known in the art. A class of block codes referred to as cyclic redundancy checkers (“CRC”) are commonly used in CDMA systems.
Convolutional codes operate by mapping a continuous information sequence of bits from the digital data of the user's information signal into a continuous encoded sequence of bits for transmission. By way of contrast, convolutional codes are different from block codes in that information sequences are not first grouped into distinct blocks and encoded. A convolutional code is generated by passing the information sequence through a shift register. The shift register contains, in general, N stages of with k bits in each stage and n function generators. The information sequence is shifted through the N stages k bits at a time, and for each k bits of the information sequence the n function generators produce n bits of the encoded sequence. Similar to block codes, the rate of the code is defined as R=k/n, and is equal to the input rate of user information being coded divided by the output rate of coded information being transmitted. The number N is called the constraint length of the code; complexity—or computing cost—of the code increases exponentially with the constraint length. A convolutional code of constraint length 9 and a ¾ code rate, for example, is used in some CDMA systems.
The highly structured nature of the mapping of the continuous information sequence of bits into continuous encoded sequence of bits enables the use of decoding algorithms for convolutional codes which are considerably different from those used for block codes. The coding performed by a particular convolutional code can be represented in various ways. For example, the coding may be represented by generator polynomials, logic tables, state diagrams, or trellis diagrams. If the coding is represented by a trellis diagram, for example, the particular trellis diagram representation will depend on the particular convolutional code being represented. The trellis diagram representation depends on the convolutional code in such a way that decoding of the encoded sequence can be performed if the trellis diagram representation is known.
Decoding of the encoded sequence, also referred to as “detection”, requires the use of a method such as Viterbi decoding. Viterbi decoding is a method for decoding convolutional codes that uses the trellis diagram representation. In the trellis diagram, each path through the trellis corresponds to a possible encoded sequence from the convolutional coder and the original information sequence that generated the encoded sequence. The Viterbi algorithm uses the encoded sequence actually received to determine a value of a metric for some of the paths through the trellis and to eliminate other paths from consideration. Finally, the decoder chooses a path through the trellis with the most favorable value of the metric, and the corresponding information sequence is thereby decoded. Thus, the Viterbi decoder provides maximum likelihood detection, as known in the art.
To provide speech communications in a CDMA system, the user's speech is encoded into digital form. A speech coder is used to convert speech into the digital data of the user's information signal for transmission over the communication channel using spread spectrum coding. Due to the desire to accommodate many users within a limited allocated bandwidth, channel capacity is an economically scarce commodity in wireless communications. Thus, it is desirable to provide the highest possible speech quality over the CDMA system while using the least possible amount of channel capacity. For this reason, digital wireless communications systems generally perform some type of compression of the digital speech signal. “Vocoders” compress the information of a speech coder signal into a signal that can be sent at a lower data rate, which is typically in the range of 4000 to 15000 bits per second (bps). Vocoders typically achieve very high economy in transmission bit rate of the user's information signal.
The economy and transmission rate efficiency of vocoders is based on using a priori knowledge about certain characteristics of the speech signal, for example, pauses and gaps, and using those characteristics to advantage. There are several different types of vocoders known in the art, such as channel vocoders, formant vocoders, Cepstrum vocoders, and LPC (linear predictive coding) vocoders. LPC vocoders can be further distinguished as multi-pulse excited LPC (MPE-LPC), code-excited LPC (CELP), and residual excited LPC (RELP).
The CELP vocoder, for example, can be a variable rate vocoder. To provide greater economy and transmission rate efficiency the variable rate vocoder takes advantage of pauses and gaps in speech and reduces its output, for example, from 14400 bps to 1800 bps during silent periods. The vocoder generates its output in “frames.” Each frame contains a certain number of data bits, and frames are produced at constant time intervals, for example, one frame every 20 milliseconds (msec). Thus, when the vocoder slows down, there are less data bits per frame. The vocoder produces frames only at a finite number of specifically chosen rates. Using the example rates already given, for example, a frame at the maximum rate of 14400 bps is referred to as a “full rate” rate frame; a frame at 1800 bps—one eighth the maximum rate—is referred to as an “eighth rate” frame, etc.
The data bits of each frame are encoded by the convolutional encoder into code symbols. Thus, the code symbol rate varies at the output of the convolutional encoder. For example, there are eight times as many code symbols encoded from a full rate frame as from an eighth rate frame. In order to keep a constant code symbol rate, some code symbols are repeated before any further processing. For example, the code symbols from a full rate frame are not repeated; the code symbols from an eighth rate frame are repeated 7 times. In the above example then, a coded sequence from an eighth rate frame could be indiscernible from a coded sequence from a full rate frame in which there are strings of eight identical symbols. Thus, when decoding the sequence of code symbols encoded by the convolutional encoder, using—for example—the Viterbi decoder discussed above, some mechanism must be provided to determine the frame rate of the code symbols.
Current methods of determining the frame rate of the code symbols during decoding for wireless speech communications fail frequently enough to produce noticeably audible and unacceptable degradation of sound quality at the receiver.
Thus, there is a need in the art for a reliable and low error rate, method of determining, without a priori knowledge, the frame rate of variable frame rate encoded speech data. Further, there is need in the art for a method and system, which is fast and efficient, of determining, without a priori knowledge, the frame rate of variable frame rate encoded speech data.